﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace CoTuong
{
    [Serializable]
    public class QuanTot : QuanCo
    {
        public QuanTot(Texture2D texture2D, int dong, int cot, int quan, Boolean isSelected)
            : base(texture2D, dong, cot, quan, isSelected)
        {

        }

        public override void Update(GameTime gameTime)
        {
            if (isSelected == true)
            {
                if (quan == 0)// Quân Đỏ
                {
                    #region Di Chuyển Tốt Đỏ
                    if (dong > 0)
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] != 1) //Kiểm Tra Di Chuyển Lên
                            this.diChuyen(dong - 1, cot);

                    if (dong <= 4) //Con Tốt Đỏ qua sông
                    {
                        if (cot < 8)
                            if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] != 1)//Kiểm Tra Di Chuyển Phải
                                this.diChuyen(dong, cot + 1);

                        if (cot > 0)
                            if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] != 1)// Kiểm Tra Di Chuyển Trái
                                this.diChuyen(dong, cot - 1);
                    }
                    #endregion
                }
                else // Quân Xanh
                {
                    #region Di Chuyển Tốt Xanh
                    if (dong < 9)
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] != 2)//Kiểm Tra Di Chuyển Xuống
                            this.diChuyen(dong + 1, cot);

                    if (dong >= 5) //Con Tốt Xanh qua sông
                    {
                        if (cot < 8 && QuanLyQuanCo.ktQuanCo[dong, cot + 1] != 2)//Kiểm Tra Di Chuyển Phải
                            this.diChuyen(dong, cot + 1);
                        if (cot > 0 && QuanLyQuanCo.ktQuanCo[dong, cot - 1] != 2)//Kiểm Tra Di Chuyển Trái
                            this.diChuyen(dong, cot - 1);
                    }
                    #endregion
                }

                ViTriDiChuyen.X = -framesizeX;
                ViTriDiChuyen.Y = -framesizeY;
            }

            base.Update(gameTime);
        }

        public override void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            if (isSelected == true)
            {
                if (quan == 0)// Quân Đỏ
                {
                    #region Vẽ Vị Trí Tốt Đỏ Di Chuyển
                    if (dong > 0)     
                        if (QuanLyQuanCo.ktQuanCo[dong - 1, cot] != 1)
                            this.VeBuocDiQuanCo(dong - 1, cot, spriteBatch);

                    if (dong <= 4) //Con Tốt Đỏ qua sông
                    {
                        if (cot < 8)
                        {
                            if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] != 1)
                                this.VeBuocDiQuanCo(dong, cot + 1, spriteBatch);
                        }
                        if (cot > 0)
                        {
                            if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] != 1)
                                this.VeBuocDiQuanCo(dong, cot - 1, spriteBatch);
                        }
                    }
                    #endregion
                }

                else // Quân Xanh
                {
                    #region Vẽ Vị Trí Tốt Xanh Di Chuyển
                    if (dong < 9)
                        if (QuanLyQuanCo.ktQuanCo[dong + 1, cot] != 2)
                            this.VeBuocDiQuanCo(dong + 1, cot, spriteBatch);

                    if (dong >= 5) //Con Tốt Xanh qua sông
                    {
                        if (cot < 8)
                            if (QuanLyQuanCo.ktQuanCo[dong, cot + 1] != 2)
                                this.VeBuocDiQuanCo(dong, cot + 1, spriteBatch);

                        if (cot > 0)
                            if (QuanLyQuanCo.ktQuanCo[dong, cot - 1] != 2)
                                this.VeBuocDiQuanCo(dong, cot - 1, spriteBatch);
                    }
                    #endregion
                }      
            }

            base.Draw(gameTime, spriteBatch);
        }
        
    }
}
